/**
 * Cria objeto XMLHttpRequest
 */
function criaXMLHttp() {
    if (window.ActiveXObject){
        var versoes = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
        for (var i = 0; i < versoes.length; i++){
            try{
                return new ActiveXObject(versoes[i]);
            }catch (e) {}
        }
    } else {
        if (window.XMLHttpRequest){
            return new XMLHttpRequest();
        }
        throw new Error("Seu browser nao suporta AJAX");
    }
}

var requisicao = criaXMLHttp();
var destino;
/**
 * Função que envia o Formulário
 * frmNome = String com o nome do Formulário
 * url = String com o action do formulário
 * destino = String com o nome da DIV de destino
 */
function enviaForm(frmNome, url, destino){ 
    this.destino = destino;
    f = document.getElementById(frmNome);
    query="";
    j=0;
    //captura os atributos do formulário montanto a seguinte estrutura dentro da  variável query: campoForm=valor&campoForm=valor
    for(i=0;i<f.elements.length;i++){
        if((f.elements[i].type=='radio' || f.elements[i].type=='checkbox' )&& !(f.elements[i].checked)){
            f.elements[i].value='';
			
            if(f.elements[i].value!=''){
                query += j==0 ? '' : '&';
                query += f.elements[i].name + '=' + f.elements[i].value;
                j++;
            }
        }
        else{
            query += j==0 ? '' : '&';
            query += f.elements[i].name + '=' + f.elements[i].value;
            j++;
        }
    }
    
    postajax(url, query, destino);
}
/**
 * Função que testa o status da requisição, utilizada no atributo onreadystatechange
 */
function TestaRetorno() {
    if(requisicao.readyState == 4){
        if(requisicao.status == 200){
            response = requisicao.responseText;
            if(response == ""){
                document.getElementById(destino).innerHTML = 'Carregando... Por favor aguarde!!!';
            } else {
                texto=requisicao.responseText;
                if(texto.substr(0,1) == '1'){
                    window.location.href = texto.substr(2);   
                }
                else{
                    div_resposta.innerHTML=texto.substr(2);
                    div_resposta.style.visibility="visible";    
                }                
            }
        }else{
            document.getElementById(destino).innerHTML = 'Ocorreu um erro ao solicitar a página';
        }
    }
}
/**
 * Envia a requisição
 * url = String que indica o arquivo a ser chamado
 * query = String para inserir atributos do form e null para abrir página
 * destino = String com o nome da DIV de destino
 */
function postajax(url, query, destino)
{
    var tipo_conteudo = 'application/x-www-form-urlencoded';
	
    if(typeof destino !=='undefined')
        div_resposta = document.getElementById(destino);
    requisicao.open('POST', url, true);
    requisicao.setRequestHeader('Content-Type', tipo_conteudo);
    requisicao.onreadystatechange = TestaRetorno;
    requisicao.send(query);
}